package com.eds.timeTask;


import com.eds.mapper.TeacherScheduleMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Component
public class DataStatusUpdateTask {

    @Autowired
    private TeacherScheduleMapper teacherScheduleMapper;

    /**
     * 每天晚上12点执行
     * cron表达式说明：
     * 秒 分 时 日 月 周
     * 0 0 0 * * ? 表示每天0点0分0秒执行
     */

    //@Scheduled(fixedDelay = 180000) // 延迟 3 分钟（180000 毫秒）
    @Scheduled(cron = "0 0 0 * * ?")//每天0点0分0秒执行
    public void updateCourseBookingStatus() {
        // 查询所有需要更新的订单
        teacherScheduleMapper.selectList(null).forEach(teacherSchedule -> {
            if (teacherSchedule.getStatus() == 1) { // 状态为1（已确认）
                // 计算时间差（以小时为单位）
                String scheduleTimeStr = teacherSchedule.getDate() + " " + teacherSchedule.getEndTime();
                // 解析为 LocalDateTime
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                LocalDateTime scheduleTime = LocalDateTime.parse(scheduleTimeStr, formatter);
                // 获取当前时间
                LocalDateTime now = LocalDateTime.now();
                long diffInSeconds = Duration.between(now, scheduleTime).getSeconds();
                // 根据时间差更新状态
                if (diffInSeconds > 0) {
                    teacherSchedule.setStatus(3); // 设置为已完成状态
                }

                // 更新订单状态
                teacherScheduleMapper.updateById(teacherSchedule);
            }
        });


    }
}